/******************************************************************************* 
  Copyright (C), 1988-2020, zeno Tech. Co., Ltd.
  Description:     PINMUX模块,统一管理芯片引脚资源
  Function List: 
           PINMUX_GetPin()
                |
                |
               \ /  
    PINMUX_SetVal()/PINMUX_GetVal()
                |
                |
               \ / 
            PINMUX_PutPin() 
               
*******************************************************************************/
#ifndef PINMUX_H 
#define PINMUX_H 

#ifdef __cplusplus
extern "C" {
#endif

/*=============================================================================
                                 Includes                                  
==============================================================================*/


/*=============================================================================
                               Macro Definition
==============================================================================*/
#define PINMUX_INVALID_INDEX      (~0)      /* 无效引脚号 */

                        
/*=============================================================================
                        Local Structures and Typedef 
==============================================================================*/


/*=============================================================================
                             extern  Variables                                  
==============================================================================*/


/*=============================================================================
                             Function Definition                                  
==============================================================================*/ 

/*******************************************************************************
  Function:     PINMUX_GetVal
  Description:  获取当前mux的状态值
  Input:        - pinId: 引脚编号
  Output:       - pVal: mux的状态值
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
int PINMUX_GetVal(unsigned int pinId, unsigned int *pVal);


/*******************************************************************************
  Function:     PINMUX_SetVal
  Description:  配置当前mux的状态值
  Input:        - pinId: 引脚编号
  Output:       - val: mux的状态值
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
int PINMUX_SetVal(unsigned int pinId, unsigned int val);


/*******************************************************************************
  Function:     PINMUX_GetPin
  Description:  获取引脚使用权
  Input:        - pinId: 引脚编号
  Output:       无
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
int PINMUX_GetPin(unsigned int pinId);


/*******************************************************************************
  Function:     PINMUX_PutPin
  Description:  释放引脚使用权
  Input:        - pinId: 引脚编号
  Output:       无
  Return:       0: 成功
                ~0: 失败
  Others:       无
*******************************************************************************/
int PINMUX_PutPin(unsigned int pinId);

#ifdef __cplusplus
}
#endif

#endif // PINMUX_H


